And move ::event into it, dropping the GtkWidget::event signal.
#include <gtk/gtkenums.h>
#include <gtk/gtkeventcontroller.h>
#include <gtk/gtkeventcontrollerkey.h>
+#include <gtk/gtkeventcontrollerlegacy.h>
#include <gtk/gtkeventcontrollermotion.h>
#include <gtk/gtkeventcontrollerscroll.h>
#include <gtk/gtkexpander.h>
*/
#include "config.h"
-#include "gtkeventcontrollerlegacyprivate.h"
+#include "gtkeventcontrollerlegacy.h"
+#include "gtkeventcontrollerprivate.h"
+#include "gtkmarshalers.h"
+#include "gtkintl.h"
+#include "gtkprivate.h"
+
+struct _GtkEventControllerLegacy
+{
+ GtkEventController parent_instance;
+};
+
+struct _GtkEventControllerLegacyClass
+{
+ GtkEventControllerClass parent_class;
+};
+
+enum {
+ EVENT,
+ N_SIGNALS
+};
+
+static guint signals[N_SIGNALS] = { 0, };
G_DEFINE_TYPE (GtkEventControllerLegacy, gtk_event_controller_legacy,
GTK_TYPE_EVENT_CONTROLLER)
gtk_event_controller_legacy_handle_event (GtkEventController *controller,
const GdkEvent *event)
{
- GtkWidget *widget = gtk_event_controller_get_widget (controller);
+ gboolean handled;
- return gtk_widget_emit_event_signals (widget, event);
+ g_signal_emit (controller, signals[EVENT], 0, event, &handled);
+
+ return handled;
}
static void
GtkEventControllerClass *controller_class = GTK_EVENT_CONTROLLER_CLASS (klass);
controller_class->handle_event = gtk_event_controller_legacy_handle_event;
+
+ /**
+ * GtkEventController::event:
+ * @controller: the object which received the signal.
+ * @event: the #GdkEvent which triggered this signal
+ *
+ * The GTK+ main loop will emit this signal for each GDK event delivered
+ * to @controller.
+ *
+ * Returns: %TRUE to stop other handlers from being invoked for the event
+ * and to cancel the emission of the second specific ::event signal.
+ * %FALSE to propagate the event further.
+ */
+ signals[EVENT] =
+ g_signal_new (I_("event"),
+ G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST,
+ 0, _gtk_boolean_handled_accumulator, NULL,
+ _gtk_marshal_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN, 1,
+ GDK_TYPE_EVENT);
+ g_signal_set_va_marshaller (signals[EVENT], G_TYPE_FROM_CLASS (klass),
+ _gtk_marshal_BOOLEAN__OBJECTv);
}
static void
--- /dev/null
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 2017, Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Author(s): Carlos Garnacho <carlosg@gnome.org>
+ */
+
+#ifndef __GTK_EVENT_CONTROLLER_LEGACY_H__
+#define __GTK_EVENT_CONTROLLER_LEGACY_H__
+
+#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
+#error "Only <gtk/gtk.h> can be included directly."
+#endif
+
+#include <gtk/gtkeventcontroller.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_EVENT_CONTROLLER_LEGACY (gtk_event_controller_legacy_get_type ())
+#define GTK_EVENT_CONTROLLER_LEGACY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacy))
+#define GTK_EVENT_CONTROLLER_LEGACY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacyClass))
+#define GTK_IS_EVENT_CONTROLLER_LEGACY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY))
+#define GTK_IS_EVENT_CONTROLLER_LEGACY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GTK_TYPE_EVENT_CONTROLLER_LEGACY))
+#define GTK_EVENT_CONTROLLER_LEGACY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacyClass))
+
+typedef struct _GtkEventControllerLegacy GtkEventControllerLegacy;
+typedef struct _GtkEventControllerLegacyClass GtkEventControllerLegacyClass;
+
+GDK_AVAILABLE_IN_ALL
+GType gtk_event_controller_legacy_get_type (void) G_GNUC_CONST;
+
+GDK_AVAILABLE_IN_ALL
+GtkEventController *gtk_event_controller_legacy_new (void);
+
+G_END_DECLS
+
+#endif /* __GTK_EVENT_CONTROLLER_LEGACY_H__ */
+++ /dev/null
-/* GTK - The GIMP Toolkit
- * Copyright (C) 2017, Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see <http://www.gnu.org/licenses/>.
- *
- * Author(s): Carlos Garnacho <carlosg@gnome.org>
- */
-
-#ifndef __GTK_EVENT_CONTROLLER_LEGACY_H__
-#define __GTK_EVENT_CONTROLLER_LEGACY_H__
-
-#include "gtkeventcontrollerprivate.h"
-#include "gtkwidgetprivate.h"
-
-G_BEGIN_DECLS
-
-#define GTK_TYPE_EVENT_CONTROLLER_LEGACY (gtk_event_controller_legacy_get_type ())
-#define GTK_EVENT_CONTROLLER_LEGACY(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacy))
-#define GTK_EVENT_CONTROLLER_LEGACY_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacyClass))
-#define GTK_IS_EVENT_CONTROLLER_LEGACY(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY))
-#define GTK_IS_EVENT_CONTROLLER_LEGACY_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GTK_TYPE_EVENT_CONTROLLER_LEGACY))
-#define GTK_EVENT_CONTROLLER_LEGACY_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GTK_TYPE_EVENT_CONTROLLER_LEGACY, GtkEventControllerLegacyClass))
-
-typedef struct _GtkEventControllerLegacy GtkEventControllerLegacy;
-typedef struct _GtkEventControllerLegacyClass GtkEventControllerLegacyClass;
-
-struct _GtkEventControllerLegacy
-{
- GtkEventController parent_instance;
-};
-
-struct _GtkEventControllerLegacyClass
-{
- GtkEventControllerClass parent_class;
-};
-
-GType gtk_event_controller_legacy_get_type (void) G_GNUC_CONST;
-GtkEventController *gtk_event_controller_legacy_new (void);
-
-#endif /* __GTK_EVENT_CONTROLLER_LEGACY_H__ */
G_TYPE_BOOLEAN, 1,
GTK_TYPE_DIRECTION_TYPE);
- /**
- * GtkWidget::event:
- * @widget: the object which received the signal.
- * @event: the #GdkEvent which triggered this signal
- *
- * The GTK+ main loop will emit this signal for each GDK event delivered
- * to a widget.
- *
- * Returns: %TRUE to stop other handlers from being invoked for the event
- * and to cancel the emission of the second specific ::event signal.
- * %FALSE to propagate the event further.
- */
- widget_signals[EVENT] =
- g_signal_new (I_("event"),
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_DEPRECATED,
- G_STRUCT_OFFSET (GtkWidgetClass, event),
- _gtk_boolean_handled_accumulator, NULL,
- _gtk_marshal_BOOLEAN__OBJECT,
- G_TYPE_BOOLEAN, 1,
- GDK_TYPE_EVENT);
- g_signal_set_va_marshaller (widget_signals[EVENT], G_TYPE_FROM_CLASS (klass),
- _gtk_marshal_BOOLEAN__OBJECTv);
-
/**
* GtkWidget::drag-leave:
* @widget: the object which received the signal.
return return_val;
}
-gboolean
-gtk_widget_emit_event_signals (GtkWidget *widget,
- const GdkEvent *event)
-{
- gboolean return_val = FALSE, handled;
-
- g_object_ref (widget);
-
- g_signal_emit (widget, widget_signals[EVENT], 0, event, &handled);
- return_val |= handled | !WIDGET_REALIZED_FOR_EVENT (widget, event);
-
- g_object_unref (widget);
-
- return return_val;
-}
-
/**
* gtk_widget_activate:
* @widget: a #GtkWidget that’s activatable
gboolean pass_through);
gboolean gtk_widget_get_pass_through (GtkWidget *widget);
-gboolean gtk_widget_emit_event_signals (GtkWidget *widget,
- const GdkEvent *event);
-
-void gtk_widget_init_legacy_controller (GtkWidget *widget);
-
void gtk_widget_get_origin_relative_to_parent (GtkWidget *widget,
int *origin_x,
int *origin_y);
'gtkcssvalue.c',
'gtkcsswidgetnode.c',
'gtkcsswin32sizevalue.c',
- 'gtkeventcontrollerlegacy.c',
'gtkfilechooserembed.c',
'gtkfilechooserentry.c',
'gtkfilechoosererrorstack.c',
gtk_private_type_headers = files([
'gtkcsstypesprivate.h',
'gtktexthandleprivate.h',
- 'gtkeventcontrollerlegacyprivate.h',
])
gtk_public_headers = files([
'gtkeventcontrollerkey.h',
'gtkeventcontrollerscroll.h',
'gtkeventcontrollermotion.h',
+ 'gtkeventcontrollerlegacy.h',
'gtkexpander.h',
'gtkfilechooser.h',
'gtkfilechooserbutton.h',